package com.vrv.app.cyberspace.common.utils;

import com.vrv.app.cyberspace.modules.sys.entity.UserTable;
import org.apache.commons.lang3.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.List;

/**
 * @Author：LJ
 * @Description：常用工具类
 * @Date: 2017/12/18
 * @Modified By:
 */
public class ToolUtil {
    public static final String CRON_DATE_FORMAT = "ss mm HH dd MM ? yyyy";

    /***
     *  功能描述：日期转换cron表达式
     * @param date
     * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String formatDateByPattern(Date date, String dateFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        String formatTimeStr = null;
        if (date != null) {
            formatTimeStr = sdf.format(date);
        }
        return formatTimeStr;
    }

    /***
     * convert Date to cron ,eg.  "0 07 10 15 1 ? 2016"
     * @param date  : 时间点
     * @return
     */
    public static String getCron(Date date) {
        return formatDateByPattern(date, CRON_DATE_FORMAT);
    }

    /***
     *
     * @param cron Quartz cron的类型的日期
     * @return Date日期
     */
    public static Date getDate(final String cron) {
        if (cron == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(CRON_DATE_FORMAT);
        Date date;
        try {
            date = sdf.parse(cron);
        } catch (ParseException e) {
            return null;// 此处缺少异常处理,自己根据需要添加
        }
        return date;
    }

    /**
     * 去除list总的重复元素
     */
    public static <T> List<T> removeDuplInList(List<T> list) {
        HashSet<T> set = new HashSet<>(list);
        list.clear();
        list.addAll(set);
        return list;
    }

    /**
     * List转换为字符串并加入分隔符
     */
    public static String listToString(List list, char separator) {
        return StringUtils.join(list.toArray(), separator);
    }
}
